package com.cesce.batch.cobros.items;

import java.math.BigDecimal;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.item.ItemProcessor;

import com.cesce.batch.cobros.reverse.Cobcomunicados;
import com.cesce.batch.cobros.reverse.Cobestados;
import com.cesce.batch.cobros.reverse.Cobregistro;




public class RegistroProcesadoProcessor implements ItemProcessor<Cobregistro, Cobregistro> {

	protected final Log logger = LogFactory.getLog(getClass());

	public static final BigDecimal UMBRAL_MAX_LINEAS_ERRONEAS=new BigDecimal(10);
	
	public Cobregistro process(Cobregistro item) throws Exception {
		

		item.setLineascorrectas(Cobcomunicados.countCobcomunicadosesByRegistroAndEstado(item.getIdregistro(), Cobestados.ID_COMUNICADO_CORRECTO));
		item.setLineaserroneas(Cobcomunicados.countCobcomunicadosesByRegistroAndEstado(item.getIdregistro(), Cobestados.ID_COMUNICADO_ERRONEO));
		item.setLineastotales(Cobcomunicados.countCobcomunicadosesByRegistro(item.getIdregistro())); 
		

		
		if(UMBRAL_MAX_LINEAS_ERRONEAS.compareTo(item.getLineaserroneas().divideToIntegralValue(item.getLineastotales()).multiply(new BigDecimal(100)))<0) {
			item.setIdestado(Cobestados.findCobestados(Cobestados.ID_PROCESADO_SUPERA_UMBRAL));
		} else {
			item.setIdestado(Cobestados.findCobestados(Cobestados.ID_PROCESADO_NO_SUPERA_UMBRAL));
		}
    	
		if(item.getLineaserroneas().compareTo(new BigDecimal(0))==0) {
			item.setIdestado(Cobestados.findCobestados(Cobestados.ID_PROCESADO_TODOS_CORRECTOS_UMBRAL));
		}
		
		return item;
	}
	
	
}
